刷算法题用的 Cpp 单文件编译相关配置文件
本文所部署的工具链在 Windows 系统上存在严重的兼容问题。
使用 vscode + clang全家桶 工具链完成刷算法题需要的 C++ 单文件编译工程。
为什么从 GCC 转到了 Clang
很简单,gcc 加微软官方提供的 C/C++ 插件这套工具链的 LSP 太拉了,在诸如智能联想、静态检查这些决定了 Coding 体验的方面现在完全不如作为后起之秀的 clangd。
系统环境
Manjaro Linux 系统,基于 Arch 的发行版。MacOS 或其它兼容 Posix 的操作系统应当都能使用这套工具链。
安装相关工具
没啥好说的,几行指令的事。
sudo pacman -S yay llvm libc++
yay -G visual-studio-code-bin
配置 VSCode
安装 clangd、Clang-Format、Clang-Tidy、Codelldb 插件。
开一个文件夹作为项目文件夹,存放相关的配置文件。
可以再顺手安装一个 cmake,不过自动编译工具在多文件项目中才用得到,在单文件编译这种简单的需求下 cmake 配置起来还是有点繁琐且不必要了。
(必需)配置编译任务
负责配置启动调试前完成编译源文件任务的 tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Source File", // 任务名
"type": "shell",
"command": "clang++",
"args": [
"-Wall", // 启用所有警告
"-stdlib=libc++", // 使用 llvm 实现的 C++ 标准库而非 GNU C++ 标准库
"-fdiagnostics-color=always", // 启用带颜色的提示信息
"-g", // 生成可用于调试的源文件
// "-fsanitize=address,undefined,leak",
"-std=c++20", //使用c++20标准编译
"${file}",
"-o",
"${workspaceFolder}/.build/${fileBasenameNoExtension}.out" // 源文件存放到 ./.build/{filename}.out
],
}
]
}
负责配置调试任务的 launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/.build/${fileBasenameNoExtension}.out", // 需要进行调试的文件名需要与配置的可执行文件输出目录一致
"args": [],
"cwd": "${workspaceFolder}",
"preLaunchTask": "Build Source File" // 预启动任务名,与 tasks.json 中的任务名保持一致
}
]
}
launch.json 与 tasks.json 都需要放到项目目录下的 .vscode 文件夹中。
(可选)配置 Clangd 全家桶
.clang-format 文件负责配置格式化程序 clang-format:
Language: Cpp
BasedOnStyle: Chromium
ColumnLimit: 120
效果图
